from exts import db
from time import time

# 测试的登录表
class Login(db.Model):
    __tablename__ = "login"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(100), nullable=False, unique=True)
    email = db.Column(db.String(100), nullable=False, unique=True)
    password = db.Column(db.String(200), nullable=False)


# 用户表
class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    nickname = db.Column(db.String(100), nullable=False) # 昵称
    username = db.Column(db.String(100), nullable=False, unique=True) # 用户账号，系统生成
    email = db.Column(db.String(100), nullable=False, unique=True) # 用户邮箱
    password = db.Column(db.String(200), nullable=False) # 密码
    userintro = db.Column(db.String(200), nullable=False) # 用户介绍
    gender = db.Column(db.String(10), nullable=False) # 性别
    createtime = db.Column(db.Integer, nullable=False) # 用户注册时间
    agree = db.Column(db.String(10), nullable=False) # 同意平台协议
    headImgPath = db.Column(db.String(500), nullable=True) # 用户头像
    money = db.Column(db.Integer, nullable=False, default=0) # 充值金币
    # 关联，正向用task，反向用user
    task = db.relationship("Task", backref="user")


# 任务表
class Task(db.Model):
    __tablename__ = "tasks"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    tasktitle = db.Column(db.String(100), nullable=False) # 任务标题
    taskintro = db.Column(db.String(1000), nullable=False) # 任务介绍
    bounty = db.Column(db.Integer, nullable=False) # 任务赏金
    createtime = db.Column(db.Integer, nullable=False) # 任务创建时间
    enddate = db.Column(db.String(30), nullable=False) # 任务截止时间
    audit = db.Column(db.Integer, nullable=False, default=0) # 任务审核，0：待审核， 1：审核通过， 2：审核不通过
    taken = db.Column(db.Integer, nullable=False, default=0) # 任务领取，0：待领取， 1：已领取
    typeid = db.Column(db.Integer, db.ForeignKey("task_type.typeid"), nullable = False) # 添加外键, 任务类型id
    userid = db.Column(db.Integer, db.ForeignKey("users.id"), nullable = False) # 添加外键, 用户id


# 任务类型表
class TaskType(db.Model):
    __tablename__ = "task_type"
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    typeid = db.Column(db.Integer, nullable=False,unique=True) # 任务类型id
    typename = db.Column(db.String(100), nullable=False) # 任务名称
    # 关联，正向用task，反向用user
    task = db.relationship("Task", backref="tasktype")


# 领取任务表, 1对多， 猎人可以领取多个任务
class DoTask(db.Model):
    __tablename__ = "do_task"
    id = db.Column(db.Integer, primary_key=True,autoincrement=True)
    worker_id = db.Column(db.Integer, nullable=False) # 猎人id
    task_id = db.Column(db.Integer, db.ForeignKey("tasks.id"), nullable = False) # 任务id
    task_res = db.Column(db.Integer, nullable=False) # 任务完成情况(0: 未完成 1: 还须开发 2: 已完成)
    task_evi =  db.Column(db.String(500), nullable=True) # 任务完成作证材料
    # 关联Task，正向用task，反向用do_task
    task = db.relationship("Task", backref="do_task")



